#ifndef CFUNS_H
#define CFUNS_H

#include "lpc_incl.h"

#ifdef LPC_TO_C
typedef struct {
    short index1, index2;
} range_switch_entry_t;

typedef struct string_switch_entry_s {
    char *string;
    int index;
} string_switch_entry_t;

void mark_switch_lists(void);

extern int lpc_int;
extern svalue_t *lpc_svp;
extern array_t *lpc_arr;
extern mapping_t *lpc_map;

void c_return(void);
void c_return_zero(void);
void c_call_inherited(int, int, int);
void c_call(int, int);
void c_efun_return(int);
void c_void_assign(void);
void c_post_dec(void);
void c_post_inc(void);
void c_pre_dec(void);
void c_pre_inc(void);
void c_assign(void);
void c_void_assign_local(svalue_t *);
void c_index(void);
void c_rindex(void);
void c_function_constructor(int, int);
void c_not(void);
void c_mod(void);
void c_add_eq(int);
void c_divide(void);
void c_multiply(void);
void c_inc(void);
void c_dec(void);
void c_le(void);
void c_lt(void);
void c_gt(void);
void c_ge(void);
void c_subtract(void);
void c_evaluate(int);
void c_negate(void);
void c_compl(void);
void c_add(void);
int c_loop_cond_compare(svalue_t *, svalue_t *);
void c_sscanf(int);
void c_parse_command(int);
void c_prepare_catch(error_context_t *);
void c_caught_error(error_context_t *);
void c_end_catch(error_context_t *);
void c_functional(int, int, POINTER_INT);
void fix_switches(string_switch_entry_t **);
int c_string_switch_lookup(svalue_t *, string_switch_entry_t *, int);
int c_range_switch_lookup(int, range_switch_entry_t *, int);
void c_foreach(int, int, int);
int c_next_foreach(void);
void c_exit_foreach(void);
void c_anonymous(int, int, POINTER_INT);
void c_expand_varargs(int);
void c_new_class(int, int);
void c_member_lvalue(int);
void c_member(int);

#endif

#endif

